package com.kob.backend.service.impl.user.account;

import com.kob.backend.mapper.SeatMapper;
import com.kob.backend.pojo.Seat;
import com.kob.backend.service.user.account.SeatStatusService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

@Service
public class SeatStatusServiceImpl implements SeatStatusService {
    @Autowired
    private SeatMapper seatMapper;

    @Override
    @Transactional
    public Map<String, String> seatstatus(int seatId, String timeslot) {
        Map<String, String> map = new HashMap<>();
        // 1. 查询数据库中具有给定 seatId 的座位记录
//        System.out.println(timeslot);
        Seat seat = seatMapper.selectById(seatId);

        // 2. 检查座位对象和当前 status 值
        if (seat != null) {
            int currentStatus = seat.getStatus();

            // 3. 根据当前 status 值进行更新
            if (currentStatus == 0) {
//                seat.setStatus(1);
                seat.setTimeslot(timeslot);  //将对应座位选择的时间段插入数据库
            } else if (currentStatus == 1) {
                seat.setStatus(0);
                seat.setTimeslot("");  //座位状态为0，时间段就置空
            }

            // 4. 执行更新操作
            int updatedRows = seatMapper.updateById(seat);
            if (updatedRows > 0) {
                map.put("error_message", "座位状态更新成功");  //改message=>error_message
            } else {
                map.put("error_message", "座位状态更新失败");
            }
        } else {
            map.put("error_message", "未找到指定座位");
        }
        return map;
    }

    //******************************************
    // 通过选择的时间段来设置座位状态
//    @Override
//    @Transactional
//    public Map<String, String> seatstatus(int seatId, String timeslot) {
//        Map<String, String> map = new HashMap<>();
//
//        // 解析前端传递的时间段字符串
//        String[] timeSlots = timeslot.split("~");
//        LocalTime startTime = LocalTime.parse(timeSlots[0].trim());
//        LocalTime endTime = LocalTime.parse(timeSlots[1].trim());
//
//        // 获取当前系统时间
//        LocalTime currentTime = LocalTime.now();
//
//        // 检查当前时间是否在时间段内
//        if (currentTime.isAfter(startTime) && currentTime.isBefore(endTime)) {
//            // 当前时间在时间段内，将座位状态设为1
//            updateSeatStatus(seatId, 1);
//            map.put("error_message", "座位状态更新成功");
//        } else {
//            // 当前时间不在时间段内，将座位状态设为0
//            updateSeatStatus(seatId, 0);
//            map.put("error_message", "座位状态更新失败，当前时间不在选择的时间段内");
//        }
//
//        return map;
//    }
//
//    // 更新座位状态
//    private void updateSeatStatus(int seatId, int status) {
//        Seat seat = seatMapper.selectById(seatId);
//        if (seat != null) {
//            seat.setStatus(status);
//            seatMapper.updateById(seat);
//        }
//    }
    //*********************************

    @Override
    public int getstatus(int seatId) {
        return seatMapper.selectById(seatId).getStatus();
    }

    @Override
    public List<Seat> getAllSeat() {
        return seatMapper.selectList(null);
    }
}
